Feature and classification vectors

Joining, by = "property"



Outer products

Call:
lm(formula = mean ~ mode_1 + mode_2 + mode_3 + mode_4 + mode_5 +
mode_6, data = d_reg)
Residuals:
Min 1Q Median 3Q Max
-0.45854 -0.11041 -0.00305 0.11604 0.70238
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 1.066e-17 1.328e-02 0.000 1.000000
mode_1 1.015e+00 1.782e-01 5.692 5.27e-08 ***
mode_2 6.187e-01 1.782e-01 3.471 0.000654 ***
mode_3 2.375e-02 1.782e-01 0.133 0.894153
mode_4 -2.688e-01 1.782e-01 -1.508 0.133315
mode_5 1.476e-01 1.782e-01 0.828 0.408630
mode_6 -2.129e-01 1.782e-01 -1.194 0.233979
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 0.1782 on 173 degrees of freedom
Multiple R-squared: 0.2202, Adjusted R-squared: 0.1932
F-statistic: 8.143 on 6 and 173 DF, p-value: 9.206e-08
Analysis of Variance Table
Model 1: mean ~ mode_1
Model 2: mean ~ mode_1 + mode_2
Model 3: mean ~ mode_1 + mode_2 + mode_3
Model 4: mean ~ mode_1 + mode_2 + mode_3 + mode_4
Model 5: mean ~ mode_1 + mode_2 + mode_3 + mode_4 + mode_5
Model 6: mean ~ mode_1 + mode_2 + mode_3 + mode_4 + mode_5 + mode_6
Res.Df RSS Df Sum of Sq F Pr(>F)
1 178 6.0186
2 177 5.6357 1 0.38283 12.0509 0.0006538 ***
3 176 5.6352 1 0.00056 0.0178 0.8941526
4 175 5.5629 1 0.07227 2.2748 0.1333145
5 174 5.5411 1 0.02180 0.6861 0.4086299
6 173 5.4958 1 0.04531 1.4265 0.2339788
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
| mode_1 |
1.789 |
1.015 |
0.178 |
5.692 |
0.000 |
*** |
| mode_2 |
1.530 |
0.619 |
0.178 |
3.471 |
0.001 |
*** |
| mode_3 |
0.930 |
0.024 |
0.178 |
0.133 |
0.894 |
n.s. |
| mode_4 |
0.468 |
-0.269 |
0.178 |
-1.508 |
0.133 |
n.s. |
| mode_5 |
0.351 |
0.148 |
0.178 |
0.828 |
0.409 |
n.s. |
| mode_6 |
0.327 |
-0.213 |
0.178 |
-1.194 |
0.234 |
n.s. |
Plotting properties in 2D spaces
Joining, by = "property"

Joining, by = "property"

Joining, by = "property"

Plotting items in 2D spaces



LS0tCnRpdGxlOiAiRXhwbG9yYXRpb24gd2l0aCBTVkQiCm91dHB1dDogaHRtbF9ub3RlYm9vawotLS0KCmBgYHtyLCBpbmNsdWRlID0gRn0KIyBGT1IgT0xERVIgS0lEUwojIGZpcnN0IHJ1biBjb2dzY2kyMDE4X2RpbWtpZC5SbWQKIyBnZXQgbWVhbnMgYnkgY2hhcmFjdGVyIGJ5IGNhcGFjaXR5IGZvciBvbGQgY29ob3J0CmRfNzlfbWVhbiA8LSBkX29sZCAlPiUKICBncm91cF9ieShjaGFyYWN0ZXIsIGNhcGFjaXR5KSAlPiUKICBzdW1tYXJpc2UobWVhbiA9IG1lYW4ocmVzcG9uc2VOdW0pKSAlPiUKICB1bmdyb3VwKCkgJT4lCiAgZ3JvdXBfYnkoY2hhcmFjdGVyKSAlPiUKICBtdXRhdGUoY2FwX21lYW4gPSBtZWFuKG1lYW4pLAogICAgICAgICBtZWFuX2NlbnQgPSBtZWFuIC0gY2FwX21lYW4pICU+JQogIHVuZ3JvdXAoKSAlPiUKICBzZWxlY3QoY2hhcmFjdGVyLCBjYXBhY2l0eSwgbWVhbl9jZW50KSAlPiUKICBzcHJlYWQoY2hhcmFjdGVyLCBtZWFuX2NlbnQpICU+JQogIHJlbW92ZV9yb3duYW1lcygpICU+JQogIGRhdGEuZnJhbWUoKSAlPiUKICBjb2x1bW5fdG9fcm93bmFtZXMoImNhcGFjaXR5IikKCiMgRk9SIEFEVUxUUyAoUE5BUyBTVFVEWSA0KQojIC4uLiBvcmllbnRlZCBsaWtlIFNheGUgZXQgYWwuCiMgZF9hZHVsdF9tZWFuIDwtIHJlYWQuY3N2KCJodHRwczovL29zZi5pby9rZHpnZS9kb3dubG9hZCIpICU+JQojICAgc2VsZWN0KHN1YmlkLCBjb25kaXRpb24sIGhhcHB5OnByaWRlKSAlPiUKIyAgIGdhdGhlcihjYXBhY2l0eSwgcmVzcG9uc2UsIC1zdWJpZCwgLWNvbmRpdGlvbikgJT4lCiMgICBncm91cF9ieShjb25kaXRpb24sIGNhcGFjaXR5KSAlPiUKIyAgIHN1bW1hcmlzZShtZWFuID0gbWVhbihyZXNwb25zZSwgbmEucm0gPSBUKSkgJT4lCiMgICB1bmdyb3VwKCkgJT4lCiMgICBncm91cF9ieShjb25kaXRpb24pICU+JQojICAgbXV0YXRlKGNhcF9tZWFuID0gbWVhbihtZWFuKSwKIyAgICAgICAgICBtZWFuX2NlbnQgPSBtZWFuIC0gY2FwX21lYW4pICU+JQojICAgdW5ncm91cCgpICU+JQojICAgc2VsZWN0KGNvbmRpdGlvbiwgY2FwYWNpdHksIG1lYW5fY2VudCkgJT4lCiMgICBzcHJlYWQoY29uZGl0aW9uLCBtZWFuX2NlbnQpICU+JQojICAgcmVtb3ZlX3Jvd25hbWVzKCkgJT4lCiMgICBkYXRhLmZyYW1lKCkgJT4lCiMgICBjb2x1bW5fdG9fcm93bmFtZXMoImNhcGFjaXR5IikKCiMgLi4uIG9yaWVudGVkIGxpa2UgSmF5CiMgZF9hZHVsdF9tZWFuIDwtIHJlYWQuY3N2KCJodHRwczovL29zZi5pby9rZHpnZS9kb3dubG9hZCIpICU+JQojICAgc2VsZWN0KHN1YmlkLCBjb25kaXRpb24sIGhhcHB5OnByaWRlKSAlPiUKIyAgIGdhdGhlcihjYXBhY2l0eSwgcmVzcG9uc2UsIC1zdWJpZCwgLWNvbmRpdGlvbikgJT4lCiMgICBncm91cF9ieShjb25kaXRpb24sIGNhcGFjaXR5KSAlPiUKIyAgIHN1bW1hcmlzZShtZWFuID0gbWVhbihyZXNwb25zZSwgbmEucm0gPSBUKSkgJT4lCiMgICB1bmdyb3VwKCkgJT4lCiMgICBncm91cF9ieShjYXBhY2l0eSkgJT4lCiMgICBtdXRhdGUoY29uZF9tZWFuID0gbWVhbihtZWFuKSwKIyAgICAgICAgICBtZWFuX2NlbnQgPSBtZWFuIC0gY29uZF9tZWFuKSAlPiUKIyAgIHVuZ3JvdXAoKSAlPiUKIyAgIHNlbGVjdChjb25kaXRpb24sIGNhcGFjaXR5LCBtZWFuX2NlbnQpICU+JQojICAgc3ByZWFkKGNhcGFjaXR5LCBtZWFuX2NlbnQpICU+JQojICAgcmVtb3ZlX3Jvd25hbWVzKCkgJT4lCiMgICBkYXRhLmZyYW1lKCkgJT4lCiMgICBjb2x1bW5fdG9fcm93bmFtZXMoImNvbmRpdGlvbiIpCgojIHNldCBiYXNlCmRfYmFzZV9tZWFuIDwtIGRfNzlfbWVhbgojIGRfYmFzZV9tZWFuIDwtIGRfYWR1bHRfbWVhbgoKIyBjaGVjayB6ZXJvLWNlbnRlcmluZwptYXgoYWJzKGNvbE1lYW5zKGRfYmFzZV9tZWFuKSkpCm1heChhYnMocm93TWVhbnMoZF9iYXNlX21lYW4pKSkKCiMgc2V0IHNjYWxlIGxpbWl0cwpzY2FsZV9saW0gPC0gYyhtaW4oZF9iYXNlX21lYW4pICsgMC4yNSwgbWF4KGRfYmFzZV9tZWFuKSArIDAuMjUpCgojIGdldCBpdGVtIGFuZCBwcm9wZXJ0eSBuYW1lcwppdGVtX25hbWVzIDwtIG5hbWVzKGRfYmFzZV9tZWFuKQpwcm9wZXJ0eV9uYW1lcyA8LSByb3duYW1lcyhkX2Jhc2VfbWVhbikKCiMgZG8gZWZhCmVmYV9mYWN0b3JzIDwtIGRhdGEuZnJhbWUocHJvcGVydHkgPSBwcm9wZXJ0eV9uYW1lcykgJT4lCiAgbXV0YXRlKGZhY3RvciA9CiAgICAgICAgICAgaWZlbHNlKHByb3BlcnR5ICVpbiUgYygiaHVuZ2VyIiwgImh1bmdyeSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicGFpbiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZmF0aWd1ZSIsICJ0aXJlZCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZmVhciIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicGxlYXN1cmUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImZyZWVfd2lsbCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiY29uc2Npb3VzIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzYWZlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkZXNpcmVzIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJuYXVzZWEiLCAibmF1c2VhdGVkIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjYWxtIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJhbmdlciIsICJhbmdyeSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaW50ZW50aW9ucyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYXdhcmVuZXNzIiwgInNlbGZfYXdhcmUiKSwKICAgICAgICAgICAgICAgICAgIkJPRFkiLAogICAgICAgICAgICAgICAgICBpZmVsc2UocHJvcGVydHkgJWluJSBjKCJlbWJhcnJhc3NtZW50IiwgImVtYmFycmFzc2VkIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicHJpZGUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJsb3ZlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZ3VpbHQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJiZWxpZWZzIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaHVydF9mZWVsaW5ncyIsICJkaXNyZXNwZWN0ZWQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzYWRuZXNzIiwgImRlcHJlc3NlZCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImVtb19yZWNvZyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImpveSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInBlcnNvbmFsaXR5IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaGFwcGluZXNzIiwgImhhcHB5IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibW9yYWxpdHkiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzZWxmX3Jlc3RyYWludCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInRob3VnaHRzIiksCiAgICAgICAgICAgICAgICAgICAgICAgICAiSEVBUlQiLAogICAgICAgICAgICAgICAgICAgICAgICAgaWZlbHNlKHByb3BlcnR5ICVpbiUgYygibWVtb3J5IiwgInJlbWVtYmVyaW5nIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInJlY29nbml6aW5nIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInRlbXBlcmF0dXJlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImNvbW11bmljYXRpbmciLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic2VlaW5nIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRlcHRoIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInNvdW5kcyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJnb2FsIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImNob2ljZSIsICJjaG9pY2VzIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImZpZ3VyaW5nX291dCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJyZWFzb25pbmciLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic21lbGwiLCAib2RvcnMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiY29tcHV0YXRpb25zIiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk1JTkQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5BKSkpKQoKIyBlZmFfZmFjdG9ycyA8LSBkYXRhLmZyYW1lKGl0ZW0gPSBpdGVtX25hbWVzKSAlPiUKIyAgIG11dGF0ZShmYWN0b3IgPQojICAgICAgICAgICAgaWZlbHNlKGl0ZW0gJWluJSBjKCJodW5nZXIiLCAiaHVuZ3J5IiwKIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInBhaW4iLAojICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZmF0aWd1ZSIsICJ0aXJlZCIsCiMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmZWFyIiwKIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInBsZWFzdXJlIiwKIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImZyZWVfd2lsbCIsCiMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjb25zY2lvdXMiLAojICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic2FmZSIsCiMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkZXNpcmVzIiwKIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5hdXNlYSIsICJuYXVzZWF0ZWQiLAojICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiY2FsbSIsCiMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJhbmdlciIsICJhbmdyeSIsCiMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJpbnRlbnRpb25zIiwKIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImF3YXJlbmVzcyIsICJzZWxmX2F3YXJlIiksCiMgICAgICAgICAgICAgICAgICAgIkJPRFkiLAojICAgICAgICAgICAgICAgICAgIGlmZWxzZShpdGVtICVpbiUgYygiZW1iYXJyYXNzbWVudCIsICJlbWJhcnJhc3NlZCIsCiMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicHJpZGUiLAojICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImxvdmUiLAojICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImd1aWx0IiwKIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJiZWxpZWZzIiwKIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJodXJ0X2ZlZWxpbmdzIiwgImRpc3Jlc3BlY3RlZCIsCiMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic2FkbmVzcyIsICJkZXByZXNzZWQiLAojICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImVtb19yZWNvZyIsCiMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiam95IiwKIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJwZXJzb25hbGl0eSIsCiMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaGFwcGluZXNzIiwgImhhcHB5IiwKIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJtb3JhbGl0eSIsCiMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic2VsZl9yZXN0cmFpbnQiLAojICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInRob3VnaHRzIiksCiMgICAgICAgICAgICAgICAgICAgICAgICAgICJIRUFSVCIsCiMgICAgICAgICAgICAgICAgICAgICAgICAgIGlmZWxzZShpdGVtICVpbiUgYygibWVtb3J5IiwgInJlbWVtYmVyaW5nIiwKIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicmVjb2duaXppbmciLAojICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0ZW1wZXJhdHVyZSIsCiMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImNvbW11bmljYXRpbmciLAojICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzZWVpbmciLAojICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkZXB0aCIsCiMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInNvdW5kcyIsCiMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImdvYWwiLAojICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjaG9pY2UiLCAiY2hvaWNlcyIsCiMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImZpZ3VyaW5nX291dCIsCiMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInJlYXNvbmluZyIsCiMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInNtZWxsIiwgIm9kb3JzIiwKIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiY29tcHV0YXRpb25zIiksCiMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTUlORCIsCiMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOQSkpKSkKCiMgZWZhX2ZhY3RvcnMgPC0gcHN5Y2g6OmZhKHQoZF9iYXNlX21lYW4pLCAzLCByb3RhdGUgPSAidmFyaW1heCIpJGxvYWRpbmdzW10gJT4lCiMgICBkYXRhLmZyYW1lKCkgJT4lCiMgICByb3duYW1lc190b19jb2x1bW4oInByb3BlcnR5IikgJT4lCiMgICBnYXRoZXIoZmFjdG9yLCBsb2FkaW5nLCAtcHJvcGVydHkpICU+JQojICAgZ3JvdXBfYnkocHJvcGVydHkpICU+JQojICAgdG9wX24oMSwgYWJzKGxvYWRpbmcpKSAlPiUKIyAgIG11dGF0ZShmYWN0b3IgPSBmYWN0b3IoZmFjdG9yLCAKIyAgICAgICAgICAgICAgICAgICAgICAgICAgbGV2ZWxzID0gYygiTVIzIiwgIk1SMSIsICJNUjIiKSwKIyAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWxzID0gYygiQk9EWSIsICJIRUFSVCIsICJNSU5EIikpKQpgYGAKCiMgRmVhdHVyZSBhbmQgY2xhc3NpZmljYXRpb24gdmVjdG9ycwoKYGBge3IsIGluY2x1ZGUgPSBGfQojIGRvIHN2ZCBmb3Igb2xkIGNvaG9ydCAoZ2V0IE4gbW9kZXMpCnN2ZF9iYXNlIDwtIHN2ZChkX2Jhc2VfbWVhbiwgNiwgNikKIyBzdmRfYmFzZSA8LSBzdmQoZF9iYXNlX21lYW4sIDQsIDQpCiMgc3ZkX2Jhc2UgPC0gc3ZkKGRfYmFzZV9tZWFuLCA2LCAyKQp1X29sZCA8LSBzdmRfYmFzZSR1CnNfb2xkIDwtIHN2ZF9iYXNlJGQKdl9vbGQgPC0gc3ZkX2Jhc2UkdgpgYGAKCmBgYHtyLCBmaWcud2lkdGggPSA0LCBmaWcuYXNwID0gMC44fQojIHZpc3VhbGl6ZSBmZWF0dXJlIHZlY3RvcnMgKHUpCmdncGxvdChkYXRhLmZyYW1lKHVfb2xkKSAlPiUKICAgICAgICAgbXV0YXRlKFgxID0gWDEgKiBzX29sZFsxXSwKICAgICAgICAgICAgICAgIFgyID0gWDIgKiBzX29sZFsyXSwKICAgICAgICAgICAgICAgIFgzID0gWDMgKiBzX29sZFszXSwKICAgICAgICAgICAgICAgIFg0ID0gWDQgKiBzX29sZFs0XSwKICAgICAgICAgICAgICAgIFg1ID0gWDUgKiBzX29sZFs1XSwKICAgICAgICAgICAgICAgIFg2ID0gWDYgKiBzX29sZFs2XSkgJT4lCiAgICAgICAgIHJvd25hbWVzX3RvX2NvbHVtbigicHJvcGVydHkiKSAlPiUKICAgICAgICAgYXJyYW5nZShkZXNjKGFicyhYMSkpLCBkZXNjKGFicyhYMikpLCAKICAgICAgICAgICAgICAgICBkZXNjKGFicyhYMykpLCBkZXNjKGFicyhYNCkpKSAlPiUKICAgICAgICAgbXV0YXRlKG9yZGVyID0gMTpucm93KC4pKSAlPiUKICAgICAgICAgZ2F0aGVyKG1vZGUsIHZhbHVlLCAtcHJvcGVydHksIC1vcmRlcikgJT4lCiAgICAgICAgIG11dGF0ZShtb2RlID0gZ3N1YigiWCIsICIiLCBtb2RlKSkgJT4lCiAgICAgICAgIG11dGF0ZV9hdCh2YXJzKHByb3BlcnR5LCBtb2RlKSwgZnVucyhhcy5udW1lcmljKSkgJT4lCiAgICAgICAgIG11dGF0ZShtb2RlID0gZmFjdG9yKG1vZGUsIGxhYmVscyA9IGMoIm1vZGVfMSIsICJtb2RlXzIiLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibW9kZV8zIiwgIm1vZGVfNCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm1vZGVfNSIsICJtb2RlXzYiKSksCiAgICAgICAgICAgICAgICBwcm9wZXJ0eSA9IGZhY3Rvcihwcm9wZXJ0eSwgbGFiZWxzID0gcHJvcGVydHlfbmFtZXMpKSwKICAgICAgIGFlcyh4ID0gbW9kZSwgeSA9IHJlb3JkZXIocHJvcGVydHksIGRlc2Mob3JkZXIpKSwKICAgICAgICAgICBmaWxsID0gdmFsdWUpKSArIAogIGdlb21fdGlsZShjb2xvciA9ICJibGFjayIpICsKICBnZW9tX3RleHQoYWVzKGxhYmVsID0gZm9ybWF0KHJvdW5kKHZhbHVlLCAyKSwgbnNtYWxsID0gMikpLCBzaXplID0gMykgKwogIHNjYWxlX2ZpbGxfZGlzdGlsbGVyKHR5cGUgPSAiZGl2IiwgcGFsZXR0ZSA9ICJSZEJ1IikgKwogIHRoZW1lX21pbmltYWwoKSArCiAgbGFicyh0aXRsZSA9ICJVICogUzogRmVhdHVyZSB2ZWN0b3JzIG11bHRpcGxpZWQgYnkgc2luZ3VsYXIgdmFsdWUgKGJ5IG1vZGUpIiwKICAgICAgIHggPSAibW9kZSIsCiAgICAgICB5ID0gInByb3BlcnR5IikKYGBgCgpgYGB7ciwgZmlnLndpZHRoID0gNiwgZmlnLmFzcCA9IDIuNX0KIyBhbHRlcm5hdGl2ZSB2aXN1YWxpemF0aW9uIG9mIGZlYXR1cmUgdmVjdG9ycyAodSkKZGF0YS5mcmFtZSh1X29sZCkgJT4lCiAgbXV0YXRlKFgxID0gWDEgKiBzX29sZFsxXSwKICAgICAgICAgWDIgPSBYMiAqIHNfb2xkWzJdLAogICAgICAgICBYMyA9IFgzICogc19vbGRbM10sCiAgICAgICAgIFg0ID0gWDQgKiBzX29sZFs0XSwKICAgICAgICAgWDUgPSBYNSAqIHNfb2xkWzVdLAogICAgICAgICBYNiA9IFg2ICogc19vbGRbNl0pICU+JQogIHJvd25hbWVzX3RvX2NvbHVtbigicHJvcGVydHkiKSAlPiUKICBhcnJhbmdlKGRlc2MoYWJzKFgxKSksIGRlc2MoYWJzKFgyKSksIAogICAgICAgICAgZGVzYyhhYnMoWDMpKSwgZGVzYyhhYnMoWDQpKSwKICAgICAgICAgIGRlc2MoYWJzKFg1KSksIGRlc2MoYWJzKFg2KSkpICU+JQogIG11dGF0ZShvcmRlciA9IDE6bnJvdyguKSkgJT4lCiAgZ2F0aGVyKG1vZGUsIHZhbHVlLCAtcHJvcGVydHksIC1vcmRlcikgJT4lCiAgbXV0YXRlKG1vZGUgPSBnc3ViKCJYIiwgIiIsIG1vZGUpKSAlPiUKICBtdXRhdGVfYXQodmFycyhwcm9wZXJ0eSwgbW9kZSksIGZ1bnMoYXMubnVtZXJpYykpICU+JQogIG11dGF0ZShtb2RlID0gZmFjdG9yKG1vZGUsIGxhYmVscyA9IGMoIm1vZGVfMSIsICJtb2RlXzIiLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJtb2RlXzMiLCAibW9kZV80IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJtb2RlXzUiLCAibW9kZV82IikpLAogICAgICAgICBwcm9wZXJ0eSA9IGZhY3Rvcihwcm9wZXJ0eSwgbGFiZWxzID0gcHJvcGVydHlfbmFtZXMpKSAlPiUKICBmdWxsX2pvaW4oZWZhX2ZhY3RvcnMgJT4lIHNlbGVjdChwcm9wZXJ0eSwgZmFjdG9yKSkgJT4lCiAgZ2dwbG90KGFlcyh4ID0gbW9kZSwgeSA9IHZhbHVlLCBsYWJlbCA9IHByb3BlcnR5LCBjb2xvciA9IGZhY3RvcikpICsKICBnZW9tX2hsaW5lKHlpbnRlcmNlcHQgPSAwLCBsdHkgPSAyKSArCiAgZ2VvbV9wb2ludCgpICsKICBnZ3JlcGVsOjpnZW9tX3RleHRfcmVwZWwoc2l6ZSA9IDMsIHNlZ21lbnQuc2l6ZSA9IDAuMSkgKyAjLCBkaXJlY3Rpb24gPSAieCIpICsKICAjIGdlb21fdGV4dChzaXplID0gMiwgcG9zaXRpb24gPSBwb3NpdGlvbl9udWRnZSh4ID0gMC4wNiksIGhqdXN0ID0gMCkgKwogIHNjYWxlX2NvbG9yX2JyZXdlcihwYWxldHRlID0gIlNldDEiKSArCiAgdGhlbWVfbWluaW1hbCgpICsKICBsYWJzKHRpdGxlID0gIlUgKiBTOiBGZWF0dXJlIHZlY3RvcnMgbXVsdGlwbGllZCBieSBzaW5ndWxhciB2YWx1ZSAoYnkgbW9kZSkiLAogICAgICAgeCA9ICJtb2RlIiwKICAgICAgIHkgPSAiVS12ZWN0b3IgdmFsdWUgKiBzaW5ndWxhciB2YWx1ZSIpCmBgYAoKYGBge3IsIGZpZy53aWR0aCA9IDQsIGZpZy5hc3AgPSAwLjZ9CiMgdmlzdWFsaXplIGNsYXNzaWZpZXIgdmVjdG9ycyAodikKZ2dwbG90KGRhdGEuZnJhbWUodl9vbGQpICU+JQogICAgICAgICBtdXRhdGUoWDEgPSBYMSAqIHNfb2xkWzFdLAogICAgICAgICAgICAgICAgWDIgPSBYMiAqIHNfb2xkWzJdLAogICAgICAgICAgICAgICAgWDMgPSBYMyAqIHNfb2xkWzNdLAogICAgICAgICAgICAgICAgWDQgPSBYNCAqIHNfb2xkWzRdLAogICAgICAgICAgICAgICAgWDUgPSBYNSAqIHNfb2xkWzVdLAogICAgICAgICAgICAgICAgWDYgPSBYNiAqIHNfb2xkWzZdKSAlPiUKICAgICAgICAgcm93bmFtZXNfdG9fY29sdW1uKCJpdGVtIikgJT4lCiAgICAgICAgIGFycmFuZ2UoZGVzYyhhYnMoWDEpKSwgZGVzYyhhYnMoWDIpKSwgCiAgICAgICAgICAgICAgICAgZGVzYyhhYnMoWDMpKSwgZGVzYyhhYnMoWDQpKSwKICAgICAgICAgICAgICAgICBkZXNjKGFicyhYNSkpLCBkZXNjKGFicyhYNikpKSAlPiUKICAgICAgICAgbXV0YXRlKG9yZGVyID0gMTpucm93KC4pKSAlPiUKICAgICAgICAgZ2F0aGVyKG1vZGUsIHZhbHVlLCAtaXRlbSwgLW9yZGVyKSAlPiUKICAgICAgICAgbXV0YXRlKG1vZGUgPSBnc3ViKCJYIiwgIiIsIG1vZGUpKSAlPiUKICAgICAgICAgbXV0YXRlX2F0KHZhcnMoaXRlbSwgbW9kZSksIGZ1bnMoYXMubnVtZXJpYykpICU+JQogICAgICAgICBtdXRhdGUobW9kZSA9IGZhY3Rvcihtb2RlLCBsYWJlbHMgPSBjKCJtb2RlXzEiLCAibW9kZV8yIiwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm1vZGVfMyIsICJtb2RlXzQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJtb2RlXzUiLCAibW9kZV82IikpLAogICAgICAgICAgICAgICAgaXRlbSA9IGZhY3RvcihpdGVtLCBsYWJlbHMgPSBpdGVtX25hbWVzKSksCiAgICAgICBhZXMoeCA9IG1vZGUsIHkgPSByZW9yZGVyKGl0ZW0sIGRlc2Mob3JkZXIpKSwKICAgICAgICAgICBmaWxsID0gdmFsdWUpKSArIAogIGdlb21fdGlsZShjb2xvciA9ICJibGFjayIpICsKICBnZW9tX3RleHQoYWVzKGxhYmVsID0gZm9ybWF0KHJvdW5kKHZhbHVlLCAyKSwgbnNtYWxsID0gMikpLCBzaXplID0gMykgKwogIHNjYWxlX2ZpbGxfZGlzdGlsbGVyKHR5cGUgPSAiZGl2IiwgcGFsZXR0ZSA9ICJSZEJ1IikgKwogIHRoZW1lX21pbmltYWwoKSArCiAgbGFicyh0aXRsZSA9ICJWICogUzogQ2xhc3NpZmljYXRpb24gdmVjdG9ycyBtdWx0aXBsaWVkIGJ5IHNpbmd1bGFyIHZhbHVlIChieSBtb2RlKSIsCiAgICAgICB4ID0gIm1vZGUiLAogICAgICAgeSA9ICJpdGVtIikKYGBgCgpgYGB7ciwgZmlnLndpZHRoID0gNiwgZmlnLmFzcCA9IDF9CiMgYWx0ZXJuYXRpdmUgdmlzdWFsaXphdGlvbiBvZiBmZWF0dXJlIHZlY3RvcnMgKHUpCmRhdGEuZnJhbWUodl9vbGQpICU+JQogIG11dGF0ZShYMSA9IFgxICogc19vbGRbMV0sCiAgICAgICAgIFgyID0gWDIgKiBzX29sZFsyXSwKICAgICAgICAgWDMgPSBYMyAqIHNfb2xkWzNdLAogICAgICAgICBYNCA9IFg0ICogc19vbGRbNF0sCiAgICAgICAgIFg1ID0gWDUgKiBzX29sZFs1XSwKICAgICAgICAgWDYgPSBYNiAqIHNfb2xkWzZdKSAlPiUKICByb3duYW1lc190b19jb2x1bW4oIml0ZW0iKSAlPiUKICBhcnJhbmdlKGRlc2MoYWJzKFgxKSksIGRlc2MoYWJzKFgyKSksCiAgICAgICAgICBkZXNjKGFicyhYMykpLCBkZXNjKGFicyhYNCkpLAogICAgICAgICAgZGVzYyhhYnMoWDUpKSwgZGVzYyhhYnMoWDYpKSkgJT4lCiAgbXV0YXRlKG9yZGVyID0gMTpucm93KC4pKSAlPiUKICBnYXRoZXIobW9kZSwgdmFsdWUsIC1pdGVtLCAtb3JkZXIpICU+JQogIG11dGF0ZShtb2RlID0gZ3N1YigiWCIsICIiLCBtb2RlKSkgJT4lCiAgbXV0YXRlX2F0KHZhcnMoaXRlbSwgbW9kZSksIGZ1bnMoYXMubnVtZXJpYykpICU+JQogIG11dGF0ZShtb2RlID0gZmFjdG9yKG1vZGUsIGxhYmVscyA9IGMoIm1vZGVfMSIsICJtb2RlXzIiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm1vZGVfMyIsICJtb2RlXzQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm1vZGVfNSIsICJtb2RlXzYiKSksCiAgICAgICAgIGl0ZW0gPSBmYWN0b3IoaXRlbSwgbGFiZWxzID0gaXRlbV9uYW1lcykpICU+JQogICMgZnVsbF9qb2luKGVmYV9mYWN0b3JzICU+JSBzZWxlY3QoaXRlbSwgZmFjdG9yKSkgJT4lCiAgZ2dwbG90KGFlcyh4ID0gbW9kZSwgeSA9IHZhbHVlLCBsYWJlbCA9IGl0ZW0pKSArICMgLCBjb2xvciA9IGZhY3RvcikpICsKICBnZW9tX2hsaW5lKHlpbnRlcmNlcHQgPSAwLCBsdHkgPSAyKSArCiAgZ2VvbV9wb2ludCgpICsKICBnZ3JlcGVsOjpnZW9tX3RleHRfcmVwZWwoc2l6ZSA9IDMsIHNlZ21lbnQuc2l6ZSA9IDAuMSkgKyAjLCBkaXJlY3Rpb24gPSAieCIpICsKICAjIGdlb21fdGV4dChzaXplID0gMiwgcG9zaXRpb24gPSBwb3NpdGlvbl9udWRnZSh4ID0gMC4wNiksIGhqdXN0ID0gMCkgKwogIHNjYWxlX2NvbG9yX2JyZXdlcihwYWxldHRlID0gIlNldDEiKSArCiAgdGhlbWVfbWluaW1hbCgpICsKICBsYWJzKHRpdGxlID0gIlYgKiBTOiBGZWF0dXJlIHZlY3RvcnMgbXVsdGlwbGllZCBieSBzaW5ndWxhciB2YWx1ZSAoYnkgbW9kZSkiLAogICAgICAgeCA9ICJtb2RlIiwKICAgICAgIHkgPSAiVi12ZWN0b3IgdmFsdWUgKiBzaW5ndWxhciB2YWx1ZSIpCmBgYAoKIyBPdXRlciBwcm9kdWN0cwoKYGBge3J9CiMgT1VURVIgUFJPRFVDVFMgKiBTSU5HVUxBUiBWQUxVRSAtLS0tLQojIGNhbGN1bGF0ZSBvdXRlciBwcm9kdWN0cywgbXVsdGlwbHkgYnkgc2luZ3VsYXIgdmFsdWUKbV9kMSA8LSBvdXRlcih1X29sZFssMV0sIHZfb2xkWywxXSkgKiBzX29sZFsxXQptX2QyIDwtIG91dGVyKHVfb2xkWywyXSwgdl9vbGRbLDJdKSAqIHNfb2xkWzJdCm1fZDMgPC0gb3V0ZXIodV9vbGRbLDNdLCB2X29sZFssM10pICogc19vbGRbM10KbV9kNCA8LSBvdXRlcih1X29sZFssNF0sIHZfb2xkWyw0XSkgKiBzX29sZFs0XQptX2Q1IDwtIG91dGVyKHVfb2xkWyw1XSwgdl9vbGRbLDVdKSAqIHNfb2xkWzVdCm1fZDYgPC0gb3V0ZXIodV9vbGRbLDZdLCB2X29sZFssNl0pICogc19vbGRbNl0KCiMgYWRkIHRvZ2V0aGVyCm1fc3VtIDwtIG1fZDEgKyBtX2QyICsgbV9kMyArIG1fZDQgKyBtX2Q1ICsgbV9kNgptX2RpZmYgPC0gYXMubWF0cml4KGRfYmFzZV9tZWFuKSAtIG1fc3VtCmBgYAoKYGBge3IsIGZpZy53aWR0aCA9IDgsIGZpZy5hc3AgPSAyfQojIGdncGxvdChkYXRhLmZyYW1lKG1fZDEpICU+JQojICAgICAgICAgIHJvd25hbWVzX3RvX2NvbHVtbigicHJvcGVydHkiKSAlPiUKIyAgICAgICAgICBnYXRoZXIoaXRlbSwgdmFsdWUsIC1wcm9wZXJ0eSkgJT4lCiMgICAgICAgICAgbXV0YXRlKGl0ZW0gPSBnc3ViKCJYIiwgIiIsIGl0ZW0pKSAlPiUKIyAgICAgICAgICBtdXRhdGVfYXQodmFycyhwcm9wZXJ0eSwgaXRlbSksIGZ1bnMoYXMubnVtZXJpYykpICU+JQojICAgICAgICAgIG11dGF0ZShpdGVtID0gZmFjdG9yKGl0ZW0sIGxhYmVscyA9IGl0ZW1fbmFtZXMpLAojICAgICAgICAgICAgICAgICBwcm9wZXJ0eSA9IGZhY3Rvcihwcm9wZXJ0eSwgbGFiZWxzID0gcHJvcGVydHlfbmFtZXMpKSwKIyAgICAgICAgYWVzKHggPSBpdGVtLCB5ID0gcHJvcGVydHksCiMgICAgICAgICAgICAjIHggPSByZW9yZGVyKGl0ZW0sIHZhbHVlKSwgeSA9IHJlb3JkZXIocHJvcGVydHksIHZhbHVlKSwgCiMgICAgICAgICAgICBmaWxsID0gdmFsdWUpKSArIAojICAgZ2VvbV90aWxlKGNvbG9yID0gImJsYWNrIikgKwojICAgZ2VvbV90ZXh0KGFlcyhsYWJlbCA9IGZvcm1hdChyb3VuZCh2YWx1ZSwgMiksIG5zbWFsbCA9IDIpKSwgc2l6ZSA9IDMpICsKIyAgIHNjYWxlX2ZpbGxfZGlzdGlsbGVyKHR5cGUgPSAiZGl2IiwgCiMgICAgICAgICAgICAgICAgICAgICAgICBsaW1pdHMgPSBzY2FsZV9saW0sCiMgICAgICAgICAgICAgICAgICAgICAgICBwYWxldHRlID0gIlBSR24iKSArCiMgICB0aGVtZV9taW5pbWFsKCkgKwojICAgdGhlbWUoYXhpcy50ZXh0LnggPSBlbGVtZW50X3RleHQoYW5nbGUgPSA0NSwgaGp1c3QgPSAxKSkgKwojICAgbGFicyh0aXRsZSA9ICJNb2RlIDE6IG91dGVyIHByb2R1Y3QgKiBzaW5ndWxhciB2YWx1ZSBtYXRyaXgiLAojICAgICAgICB4ID0gIml0ZW0iLAojICAgICAgICB5ID0gInByb3BlcnR5IikKIyAKIyBnZ3Bsb3QoZGF0YS5mcmFtZShtX2QyKSAlPiUKIyAgICAgICAgICByb3duYW1lc190b19jb2x1bW4oInByb3BlcnR5IikgJT4lCiMgICAgICAgICAgZ2F0aGVyKGl0ZW0sIHZhbHVlLCAtcHJvcGVydHkpICU+JQojICAgICAgICAgIG11dGF0ZShpdGVtID0gZ3N1YigiWCIsICIiLCBpdGVtKSkgJT4lCiMgICAgICAgICAgbXV0YXRlX2F0KHZhcnMocHJvcGVydHksIGl0ZW0pLCBmdW5zKGFzLm51bWVyaWMpKSAlPiUKIyAgICAgICAgICBtdXRhdGUoaXRlbSA9IGZhY3RvcihpdGVtLCBsYWJlbHMgPSBpdGVtX25hbWVzKSwKIyAgICAgICAgICAgICAgICAgcHJvcGVydHkgPSBmYWN0b3IocHJvcGVydHksIGxhYmVscyA9IHByb3BlcnR5X25hbWVzKSksCiMgICAgICAgIGFlcyh4ID0gaXRlbSwgeSA9IHByb3BlcnR5LAojICAgICAgICAgICMgeCA9IHJlb3JkZXIoaXRlbSwgdmFsdWUpLCB5ID0gcmVvcmRlcihwcm9wZXJ0eSwgdmFsdWUpLCAKIyAgICAgICAgICBmaWxsID0gdmFsdWUpKSArIAojICAgZ2VvbV90aWxlKGNvbG9yID0gImJsYWNrIikgKwojICAgZ2VvbV90ZXh0KGFlcyhsYWJlbCA9IGZvcm1hdChyb3VuZCh2YWx1ZSwgMiksIG5zbWFsbCA9IDIpKSwgc2l6ZSA9IDMpICsKIyAgIHNjYWxlX2ZpbGxfZGlzdGlsbGVyKHR5cGUgPSAiZGl2IiwgCiMgICAgICAgICAgICAgICAgICAgICAgICBsaW1pdHMgPSBzY2FsZV9saW0sCiMgICAgICAgICAgICAgICAgICAgICAgICBwYWxldHRlID0gIlBSR24iKSArCiMgICB0aGVtZV9taW5pbWFsKCkgKwojICAgdGhlbWUoYXhpcy50ZXh0LnggPSBlbGVtZW50X3RleHQoYW5nbGUgPSA0NSwgaGp1c3QgPSAxKSkgKwojICAgbGFicyh0aXRsZSA9ICJNb2RlIDI6IG91dGVyIHByb2R1Y3QgKiBzaW5ndWxhciB2YWx1ZSBtYXRyaXgiLAojICAgICAgICB4ID0gIml0ZW0iLAojICAgICAgICB5ID0gInByb3BlcnR5IikKIyAKIyBnZ3Bsb3QoZGF0YS5mcmFtZShtX2QzKSAlPiUKIyAgICAgICAgICByb3duYW1lc190b19jb2x1bW4oInByb3BlcnR5IikgJT4lCiMgICAgICAgICAgZ2F0aGVyKGl0ZW0sIHZhbHVlLCAtcHJvcGVydHkpICU+JQojICAgICAgICAgIG11dGF0ZShpdGVtID0gZ3N1YigiWCIsICIiLCBpdGVtKSkgJT4lCiMgICAgICAgICAgbXV0YXRlX2F0KHZhcnMocHJvcGVydHksIGl0ZW0pLCBmdW5zKGFzLm51bWVyaWMpKSAlPiUKIyAgICAgICAgICBtdXRhdGUoaXRlbSA9IGZhY3RvcihpdGVtLCBsYWJlbHMgPSBpdGVtX25hbWVzKSwKIyAgICAgICAgICAgICAgICAgcHJvcGVydHkgPSBmYWN0b3IocHJvcGVydHksIGxhYmVscyA9IHByb3BlcnR5X25hbWVzKSksCiMgICAgICAgIGFlcyh4ID0gaXRlbSwgeSA9IHByb3BlcnR5LAojICAgICAgICAgICMgeCA9IHJlb3JkZXIoaXRlbSwgdmFsdWUpLCB5ID0gcmVvcmRlcihwcm9wZXJ0eSwgdmFsdWUpLCAKIyAgICAgICAgICBmaWxsID0gdmFsdWUpKSArIAojICAgZ2VvbV90aWxlKGNvbG9yID0gImJsYWNrIikgKwojICAgZ2VvbV90ZXh0KGFlcyhsYWJlbCA9IGZvcm1hdChyb3VuZCh2YWx1ZSwgMiksIG5zbWFsbCA9IDIpKSwgc2l6ZSA9IDMpICsKIyAgIHNjYWxlX2ZpbGxfZGlzdGlsbGVyKHR5cGUgPSAiZGl2IiwgCiMgICAgICAgICAgICAgICAgICAgICAgICBsaW1pdHMgPSBzY2FsZV9saW0sCiMgICAgICAgICAgICAgICAgICAgICAgICBwYWxldHRlID0gIlBSR24iKSArCiMgICB0aGVtZV9taW5pbWFsKCkgKwojICAgdGhlbWUoYXhpcy50ZXh0LnggPSBlbGVtZW50X3RleHQoYW5nbGUgPSA0NSwgaGp1c3QgPSAxKSkgKwojICAgbGFicyh0aXRsZSA9ICJNb2RlIDM6IG91dGVyIHByb2R1Y3QgKiBzaW5ndWxhciB2YWx1ZSBtYXRyaXgiLAojICAgICAgICB4ID0gIml0ZW0iLAojICAgICAgICB5ID0gInByb3BlcnR5IikKIyAKIyBnZ3Bsb3QoZGF0YS5mcmFtZShtX2Q0KSAlPiUKIyAgICAgICAgICByb3duYW1lc190b19jb2x1bW4oInByb3BlcnR5IikgJT4lCiMgICAgICAgICAgZ2F0aGVyKGl0ZW0sIHZhbHVlLCAtcHJvcGVydHkpICU+JQojICAgICAgICAgIG11dGF0ZShpdGVtID0gZ3N1YigiWCIsICIiLCBpdGVtKSkgJT4lCiMgICAgICAgICAgbXV0YXRlX2F0KHZhcnMocHJvcGVydHksIGl0ZW0pLCBmdW5zKGFzLm51bWVyaWMpKSAlPiUKIyAgICAgICAgICBtdXRhdGUoaXRlbSA9IGZhY3RvcihpdGVtLCBsYWJlbHMgPSBpdGVtX25hbWVzKSwKIyAgICAgICAgICAgICAgICAgcHJvcGVydHkgPSBmYWN0b3IocHJvcGVydHksIGxhYmVscyA9IHByb3BlcnR5X25hbWVzKSksCiMgICAgICAgIGFlcyh4ID0gaXRlbSwgeSA9IHByb3BlcnR5LAojICAgICAgICAgICMgeCA9IHJlb3JkZXIoaXRlbSwgdmFsdWUpLCB5ID0gcmVvcmRlcihwcm9wZXJ0eSwgdmFsdWUpLCAKIyAgICAgICAgICBmaWxsID0gdmFsdWUpKSArIAojICAgZ2VvbV90aWxlKGNvbG9yID0gImJsYWNrIikgKwojICAgZ2VvbV90ZXh0KGFlcyhsYWJlbCA9IGZvcm1hdChyb3VuZCh2YWx1ZSwgMiksIG5zbWFsbCA9IDIpKSwgc2l6ZSA9IDMpICsKIyAgIHNjYWxlX2ZpbGxfZGlzdGlsbGVyKHR5cGUgPSAiZGl2IiwgCiMgICAgICAgICAgICAgICAgICAgICAgICBsaW1pdHMgPSBzY2FsZV9saW0sCiMgICAgICAgICAgICAgICAgICAgICAgICBwYWxldHRlID0gIlBSR24iKSArCiMgICB0aGVtZV9taW5pbWFsKCkgKwojICAgdGhlbWUoYXhpcy50ZXh0LnggPSBlbGVtZW50X3RleHQoYW5nbGUgPSA0NSwgaGp1c3QgPSAxKSkgKwojICAgbGFicyh0aXRsZSA9ICJNb2RlIDQ6IG91dGVyIHByb2R1Y3QgKiBzaW5ndWxhciB2YWx1ZSBtYXRyaXgiLAojICAgICAgICB4ID0gIml0ZW0iLAojICAgICAgICB5ID0gInByb3BlcnR5IikKCmdfYWN0dWFsIDwtIGdncGxvdChkYXRhLmZyYW1lKGRfYmFzZV9tZWFuKSAlPiUKICAgICAgICAgICAgICAgICAgICAgcm93bmFtZXNfdG9fY29sdW1uKCJwcm9wZXJ0eSIpICU+JQogICAgICAgICAgICAgICAgICAgICBnYXRoZXIoaXRlbSwgdmFsdWUsIC1wcm9wZXJ0eSkgJT4lCiAgICAgICAgICAgICAgICAgICAgIG11dGF0ZShpdGVtID0gZmFjdG9yKGl0ZW0sIGxldmVscyA9IGl0ZW1fbmFtZXMpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvcGVydHkgPSBmYWN0b3IocHJvcGVydHksIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV2ZWxzID0gcHJvcGVydHlfbmFtZXMpKSwKICAgICAgICAgICAgICAgICAgIGFlcyh4ID0gaXRlbSwgeSA9IHByb3BlcnR5LAogICAgICAgICAgICAgICAgICAgICAgICMgeCA9IHJlb3JkZXIoaXRlbSwgdmFsdWUpLCB5ID0gcmVvcmRlcihwcm9wZXJ0eSwgdmFsdWUpLAogICAgICAgICAgICAgICAgICAgICAgIGZpbGwgPSB2YWx1ZSkpICsKICBnZW9tX3RpbGUoY29sb3IgPSAiYmxhY2siKSArCiAgZ2VvbV90ZXh0KGFlcyhsYWJlbCA9IGZvcm1hdChyb3VuZCh2YWx1ZSwgMiksIG5zbWFsbCA9IDIpKSwgc2l6ZSA9IDMpICsKICBzY2FsZV9maWxsX2Rpc3RpbGxlcih0eXBlID0gImRpdiIsIAogICAgICAgICAgICAgICAgICAgICAgICMgbGltaXRzID0gc2NhbGVfbGltLAogICAgICAgICAgICAgICAgICAgICAgIGxpbWl0cyA9IGMoLTEsIDEpLAogICAgICAgICAgICAgICAgICAgICAgIHBhbGV0dGUgPSAiUFJHbiIpICsKICB0aGVtZV9taW5pbWFsKCkgKwogIHRoZW1lKGF4aXMudGV4dC54ID0gZWxlbWVudF90ZXh0KGFuZ2xlID0gNDUsIGhqdXN0ID0gMSkpICsKICBsYWJzKHRpdGxlID0gIkFjdHVhbCBkYXRhIiwKICAgICAgIHggPSAiaXRlbSIsCiAgICAgICB5ID0gInByb3BlcnR5IikKCmdfbGluY29tYiA8LSBnZ3Bsb3QoZGF0YS5mcmFtZShtX3N1bSkgJT4lCiAgICAgICAgICAgICAgICAgICAgICByb3duYW1lc190b19jb2x1bW4oInByb3BlcnR5IikgJT4lCiAgICAgICAgICAgICAgICAgICAgICBnYXRoZXIoaXRlbSwgdmFsdWUsIC1wcm9wZXJ0eSkgJT4lCiAgICAgICAgICAgICAgICAgICAgICBtdXRhdGUoaXRlbSA9IGdzdWIoIlgiLCAiIiwgaXRlbSkpICU+JQogICAgICAgICAgICAgICAgICAgICAgbXV0YXRlX2F0KHZhcnMocHJvcGVydHksIGl0ZW0pLCBmdW5zKGFzLm51bWVyaWMpKSAlPiUKICAgICAgICAgICAgICAgICAgICAgIG11dGF0ZShpdGVtID0gZmFjdG9yKGl0ZW0sIGxhYmVscyA9IGl0ZW1fbmFtZXMpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb3BlcnR5ID0gZmFjdG9yKHByb3BlcnR5LCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbHMgPSBwcm9wZXJ0eV9uYW1lcykpLAogICAgICAgICAgICAgICAgICAgIGFlcyh4ID0gaXRlbSwgeSA9IHByb3BlcnR5LAogICAgICAgICAgICAgICAgICAgICAgICAjIHggPSByZW9yZGVyKGl0ZW0sIHZhbHVlKSwgCiAgICAgICAgICAgICAgICAgICAgICAgICMgeSA9IHJlb3JkZXIocHJvcGVydHksIHZhbHVlKSwKICAgICAgICAgICAgICAgICAgICAgICAgZmlsbCA9IHZhbHVlKSkgKwogIGdlb21fdGlsZShjb2xvciA9ICJibGFjayIpICsKICBnZW9tX3RleHQoYWVzKGxhYmVsID0gZm9ybWF0KHJvdW5kKHZhbHVlLCAyKSwgbnNtYWxsID0gMikpLCBzaXplID0gMykgKwogIHNjYWxlX2ZpbGxfZGlzdGlsbGVyKHR5cGUgPSAiZGl2IiwgCiAgICAgICAgICAgICAgICAgICAgICAgIyBsaW1pdHMgPSBzY2FsZV9saW0sCiAgICAgICAgICAgICAgICAgICAgICAgbGltaXRzID0gYygtMSwgMSksCiAgICAgICAgICAgICAgICAgICAgICAgcGFsZXR0ZSA9ICJQUkduIikgKwogIHRoZW1lX21pbmltYWwoKSArCiAgdGhlbWUoYXhpcy50ZXh0LnggPSBlbGVtZW50X3RleHQoYW5nbGUgPSA0NSwgaGp1c3QgPSAxKSkgKwogIGxhYnModGl0bGUgPSAiTGluZWFyIGNvbWJpbmF0aW9uIG9mIGFsbCBtb2RlcyIsCiAgICAgICB4ID0gIml0ZW0iLAogICAgICAgeSA9ICJwcm9wZXJ0eSIpCgpnX2RpZmYgPC0gZ2dwbG90KGRhdGEuZnJhbWUobV9kaWZmKSAlPiUKICAgICAgICAgICAgICAgICAgIHJvd25hbWVzX3RvX2NvbHVtbigicHJvcGVydHkiKSAlPiUKICAgICAgICAgICAgICAgICAgIGdhdGhlcihpdGVtLCB2YWx1ZSwgLXByb3BlcnR5KSAlPiUKICAgICAgICAgICAgICAgICAgIG11dGF0ZShpdGVtID0gZ3N1YigiWCIsICIiLCBpdGVtKSkgJT4lCiAgICAgICAgICAgICAgICAgICBtdXRhdGVfYXQodmFycyhwcm9wZXJ0eSwgaXRlbSksIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bnMoLiAlPiUgZmFjdG9yICU+JSBhcy5udW1lcmljKSkgJT4lCiAgICAgICAgICAgICAgICAgICBtdXRhdGUoaXRlbSA9IGZhY3RvcihpdGVtLCBsYWJlbHMgPSBpdGVtX25hbWVzKSwKICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9wZXJ0eSA9IGZhY3Rvcihwcm9wZXJ0eSwgbGFiZWxzID0gcHJvcGVydHlfbmFtZXMpKSwKICAgICAgICAgICAgICAgICBhZXMoeCA9IGl0ZW0sIHkgPSBwcm9wZXJ0eSwKICAgICAgICAgICAgICAgICAgICAgIyB4ID0gcmVvcmRlcihpdGVtLCB2YWx1ZSksIHkgPSByZW9yZGVyKHByb3BlcnR5LCB2YWx1ZSksCiAgICAgICAgICAgICAgICAgICAgIGZpbGwgPSB2YWx1ZSkpICsgCiAgZ2VvbV90aWxlKGNvbG9yID0gImJsYWNrIikgKwogIGdlb21fdGV4dChhZXMobGFiZWwgPSBmb3JtYXQocm91bmQodmFsdWUsIDIpLCBuc21hbGwgPSAyKSksIHNpemUgPSAzKSArCiAgc2NhbGVfZmlsbF9kaXN0aWxsZXIodHlwZSA9ICJkaXYiLCAKICAgICAgICAgICAgICAgICAgICAgICAjIGxpbWl0cyA9IHNjYWxlX2xpbSwKICAgICAgICAgICAgICAgICAgICAgICBsaW1pdHMgPSBjKC0xLCAxKSwKICAgICAgICAgICAgICAgICAgICAgICBwYWxldHRlID0gIlBSR24iKSArCiAgdGhlbWVfbWluaW1hbCgpICsKICB0aGVtZShheGlzLnRleHQueCA9IGVsZW1lbnRfdGV4dChhbmdsZSA9IDQ1LCBoanVzdCA9IDEpKSArCiAgbGFicyh0aXRsZSA9ICJEaWZmZXJlbmNlOiBkYXRhIC0gbGluZWFyIGNvbWJpbmF0aW9uIG9mIG1vZGVzIiwKICAgICAgIHggPSAiaXRlbSIsCiAgICAgICB5ID0gInByb3BlcnR5IikKCmNvd3Bsb3Q6OnBsb3RfZ3JpZChnX2FjdHVhbCwgZ19saW5jb21iLCBnX2RpZmYsIG5jb2wgPSAxKQpgYGAKCmBgYHtyfQojIFJFR1JFU1NJT04gLS0tLS0KCiMgdHVybiBldmVyeXRoaW5nIGludG8gdmVjdG9ycwojIGRhdGEKZF9iYXNlX3ZlYyA8LSBkX2Jhc2VfbWVhbiAlPiUgCiAgcm93bmFtZXNfdG9fY29sdW1uKCJwcm9wZXJ0eSIpICU+JQogIGdhdGhlcihpdGVtLCBtZWFuLCAtcHJvcGVydHkpICU+JQogIG11dGF0ZShpdGVtID0gZmFjdG9yKGl0ZW0sIGxhYmVscyA9IGl0ZW1fbmFtZXMpLAogICAgICAgICBwcm9wZXJ0eSA9IGZhY3Rvcihwcm9wZXJ0eSwgbGFiZWxzID0gcHJvcGVydHlfbmFtZXMpKSAlPiUKICBhcnJhbmdlKGl0ZW0sIHByb3BlcnR5KSAlPiUKICBzZWxlY3QobWVhbikKCiMgbW9kZV8xCm1vZGVfMV92ZWMgPC0gb3V0ZXIodV9vbGRbLDFdLCB2X29sZFssMV0pICU+JQogIGRhdGEuZnJhbWUoKSAlPiUKICByb3duYW1lc190b19jb2x1bW4oInByb3BlcnR5IikgJT4lCiAgZ2F0aGVyKGl0ZW0sIHZhbHVlLCAtcHJvcGVydHkpICU+JQogIG11dGF0ZShpdGVtID0gZ3N1YigiWCIsICIiLCBpdGVtKSkgJT4lCiAgbXV0YXRlX2F0KHZhcnMocHJvcGVydHksIGl0ZW0pLCBmdW5zKGFzLm51bWVyaWMpKSAlPiUKICBtdXRhdGUoaXRlbSA9IGZhY3RvcihpdGVtLCBsYWJlbHMgPSBpdGVtX25hbWVzKSwKICAgICAgICAgcHJvcGVydHkgPSBmYWN0b3IocHJvcGVydHksIGxhYmVscyA9IHByb3BlcnR5X25hbWVzKSkgJT4lCiAgYXJyYW5nZShpdGVtLCBwcm9wZXJ0eSkgJT4lCiAgc2VsZWN0KHZhbHVlKSAlPiUKICByZW5hbWUobW9kZV8xID0gdmFsdWUpCgojIG1vZGVfMgptb2RlXzJfdmVjIDwtIG91dGVyKHVfb2xkWywyXSwgdl9vbGRbLDJdKSAlPiUKICBkYXRhLmZyYW1lKCkgJT4lCiAgcm93bmFtZXNfdG9fY29sdW1uKCJwcm9wZXJ0eSIpICU+JQogIGdhdGhlcihpdGVtLCB2YWx1ZSwgLXByb3BlcnR5KSAlPiUKICBtdXRhdGUoaXRlbSA9IGdzdWIoIlgiLCAiIiwgaXRlbSkpICU+JQogIG11dGF0ZV9hdCh2YXJzKHByb3BlcnR5LCBpdGVtKSwgZnVucyhhcy5udW1lcmljKSkgJT4lCiAgbXV0YXRlKGl0ZW0gPSBmYWN0b3IoaXRlbSwgbGFiZWxzID0gaXRlbV9uYW1lcyksCiAgICAgICAgIHByb3BlcnR5ID0gZmFjdG9yKHByb3BlcnR5LCBsYWJlbHMgPSBwcm9wZXJ0eV9uYW1lcykpICU+JQogIGFycmFuZ2UoaXRlbSwgcHJvcGVydHkpICU+JQogIHNlbGVjdCh2YWx1ZSkgJT4lCiAgcmVuYW1lKG1vZGVfMiA9IHZhbHVlKQoKIyBtb2RlXzMKbW9kZV8zX3ZlYyA8LSBvdXRlcih1X29sZFssM10sIHZfb2xkWywzXSkgJT4lCiAgZGF0YS5mcmFtZSgpICU+JQogIHJvd25hbWVzX3RvX2NvbHVtbigicHJvcGVydHkiKSAlPiUKICBnYXRoZXIoaXRlbSwgdmFsdWUsIC1wcm9wZXJ0eSkgJT4lCiAgbXV0YXRlKGl0ZW0gPSBnc3ViKCJYIiwgIiIsIGl0ZW0pKSAlPiUKICBtdXRhdGVfYXQodmFycyhwcm9wZXJ0eSwgaXRlbSksIGZ1bnMoYXMubnVtZXJpYykpICU+JQogIG11dGF0ZShpdGVtID0gZmFjdG9yKGl0ZW0sIGxhYmVscyA9IGl0ZW1fbmFtZXMpLAogICAgICAgICBwcm9wZXJ0eSA9IGZhY3Rvcihwcm9wZXJ0eSwgbGFiZWxzID0gcHJvcGVydHlfbmFtZXMpKSAlPiUKICBhcnJhbmdlKGl0ZW0sIHByb3BlcnR5KSAlPiUKICBzZWxlY3QodmFsdWUpICU+JQogIHJlbmFtZShtb2RlXzMgPSB2YWx1ZSkKCiMgbW9kZV80Cm1vZGVfNF92ZWMgPC0gb3V0ZXIodV9vbGRbLDRdLCB2X29sZFssNF0pICU+JQogIGRhdGEuZnJhbWUoKSAlPiUKICByb3duYW1lc190b19jb2x1bW4oInByb3BlcnR5IikgJT4lCiAgZ2F0aGVyKGl0ZW0sIHZhbHVlLCAtcHJvcGVydHkpICU+JQogIG11dGF0ZShpdGVtID0gZ3N1YigiWCIsICIiLCBpdGVtKSkgJT4lCiAgbXV0YXRlX2F0KHZhcnMocHJvcGVydHksIGl0ZW0pLCBmdW5zKGFzLm51bWVyaWMpKSAlPiUKICBtdXRhdGUoaXRlbSA9IGZhY3RvcihpdGVtLCBsYWJlbHMgPSBpdGVtX25hbWVzKSwKICAgICAgICAgcHJvcGVydHkgPSBmYWN0b3IocHJvcGVydHksIGxhYmVscyA9IHByb3BlcnR5X25hbWVzKSkgJT4lCiAgYXJyYW5nZShpdGVtLCBwcm9wZXJ0eSkgJT4lCiAgc2VsZWN0KHZhbHVlKSAlPiUKICByZW5hbWUobW9kZV80ID0gdmFsdWUpCgojIG1vZGVfNQptb2RlXzVfdmVjIDwtIG91dGVyKHVfb2xkWyw1XSwgdl9vbGRbLDVdKSAlPiUKICBkYXRhLmZyYW1lKCkgJT4lCiAgcm93bmFtZXNfdG9fY29sdW1uKCJwcm9wZXJ0eSIpICU+JQogIGdhdGhlcihpdGVtLCB2YWx1ZSwgLXByb3BlcnR5KSAlPiUKICBtdXRhdGUoaXRlbSA9IGdzdWIoIlgiLCAiIiwgaXRlbSkpICU+JQogIG11dGF0ZV9hdCh2YXJzKHByb3BlcnR5LCBpdGVtKSwgZnVucyhhcy5udW1lcmljKSkgJT4lCiAgbXV0YXRlKGl0ZW0gPSBmYWN0b3IoaXRlbSwgbGFiZWxzID0gaXRlbV9uYW1lcyksCiAgICAgICAgIHByb3BlcnR5ID0gZmFjdG9yKHByb3BlcnR5LCBsYWJlbHMgPSBwcm9wZXJ0eV9uYW1lcykpICU+JQogIGFycmFuZ2UoaXRlbSwgcHJvcGVydHkpICU+JQogIHNlbGVjdCh2YWx1ZSkgJT4lCiAgcmVuYW1lKG1vZGVfNSA9IHZhbHVlKQoKIyBtb2RlXzYKbW9kZV82X3ZlYyA8LSBvdXRlcih1X29sZFssNl0sIHZfb2xkWyw2XSkgJT4lCiAgZGF0YS5mcmFtZSgpICU+JQogIHJvd25hbWVzX3RvX2NvbHVtbigicHJvcGVydHkiKSAlPiUKICBnYXRoZXIoaXRlbSwgdmFsdWUsIC1wcm9wZXJ0eSkgJT4lCiAgbXV0YXRlKGl0ZW0gPSBnc3ViKCJYIiwgIiIsIGl0ZW0pKSAlPiUKICBtdXRhdGVfYXQodmFycyhwcm9wZXJ0eSwgaXRlbSksIGZ1bnMoYXMubnVtZXJpYykpICU+JQogIG11dGF0ZShpdGVtID0gZmFjdG9yKGl0ZW0sIGxhYmVscyA9IGl0ZW1fbmFtZXMpLAogICAgICAgICBwcm9wZXJ0eSA9IGZhY3Rvcihwcm9wZXJ0eSwgbGFiZWxzID0gcHJvcGVydHlfbmFtZXMpKSAlPiUKICBhcnJhbmdlKGl0ZW0sIHByb3BlcnR5KSAlPiUKICBzZWxlY3QodmFsdWUpICU+JQogIHJlbmFtZShtb2RlXzYgPSB2YWx1ZSkKCiMgY29tYmluZQpkX3JlZyA8LSBjYmluZChkX2Jhc2VfdmVjLCAKICAgICAgICAgICAgICAgbW9kZV8xX3ZlYywgbW9kZV8yX3ZlYywgbW9kZV8zX3ZlYywgbW9kZV80X3ZlYywKICAgICAgICAgICAgICAgbW9kZV81X3ZlYywgbW9kZV82X3ZlYykKCiMgcmVncmVzc2lvbgpyMSA8LSBsbShtZWFuIH4gbW9kZV8xLCBkX3JlZyk7ICNzdW1tYXJ5KHIxKQojIHIyIDwtIGxtKG1lYW4gfiBtb2RlXzIsIGRfcmVnKTsgI3N1bW1hcnkocjIpCiMgcjMgPC0gbG0obWVhbiB+IG1vZGVfMywgZF9yZWcpOyAjc3VtbWFyeShyMykKIyByNCA8LSBsbShtZWFuIH4gbW9kZV80LCBkX3JlZyk7ICNzdW1tYXJ5KHI0KQpyMTIgPC0gbG0obWVhbiB+IG1vZGVfMSArIG1vZGVfMiwgZF9yZWcpOyAjc3VtbWFyeShyMTIpCnIxMjMgPC0gbG0obWVhbiB+IG1vZGVfMSArIG1vZGVfMiArIG1vZGVfMywgZF9yZWcpOyAjc3VtbWFyeShyMTIzKQpyMTIzNCA8LSBsbShtZWFuIH4gbW9kZV8xICsgbW9kZV8yICsgbW9kZV8zICsgbW9kZV80LCBkX3JlZyk7ICNzdW1tYXJ5KHIxMjM0KQpyMTIzNDUgPC0gbG0obWVhbiB+IG1vZGVfMSArIG1vZGVfMiArIG1vZGVfMyArIG1vZGVfNCArIG1vZGVfNSwgZF9yZWcpOyAjc3VtbWFyeShyMTIzNDUpCiMgcjEyMzRfMCA8LSBsbShtZWFuIH4gMCArIG1vZGVfMSArIG1vZGVfMiArIG1vZGVfMyArIG1vZGVfNCwgZF9yZWcpOyBzdW1tYXJ5KHIxMjM0XzApCnIxMjM0NTYgPC0gbG0obWVhbiB+IG1vZGVfMSArIG1vZGVfMiArIG1vZGVfMyArIG1vZGVfNCArIG1vZGVfNSArIG1vZGVfNiwgCiAgICAgICAgICAgICAgZF9yZWcpOyBzdW1tYXJ5KHIxMjM0NTYpCmBgYAoKYGBge3J9CmFub3ZhKHIxLCByMTIsIHIxMjMsIHIxMjM0LCByMTIzNDUsIHIxMjM0NTYpCmBgYAoKYGBge3IsIHJlc3VsdHMgPSAiYXMuaXMifQpzdW1tYXJ5KHIxMjM0NTYpJGNvZWZmaWNpZW50cyAlPiUKICBkYXRhLmZyYW1lKCkgJT4lCiAgcm93bmFtZXNfdG9fY29sdW1uKCJwYXJhbWV0ZXIiKSAlPiUKICBtdXRhdGUoU1YgPSBjKE5BLCBzX29sZFsxOjZdKSkgJT4lCiAgcmVuYW1lKGJldGEgPSBFc3RpbWF0ZSwKICAgICAgICAgYmV0YV9zZSA9IFN0ZC4uRXJyb3IsCiAgICAgICAgIGJldGFfdCA9IHQudmFsdWUsCiAgICAgICAgIGJldGFfcCA9IFByLi4udC4uKSAlPiUKICBtdXRhdGUoc2lnbmlmID0gaWZlbHNlKGJldGFfcCA8IDAuMDAxLCAiKioqIiwKICAgICAgICAgICAgICAgICAgICAgICAgIGlmZWxzZShiZXRhX3AgPCAwLjAxLCAiKioiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmZWxzZShiZXRhX3AgPCAwLjA1LCAiKiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJuLnMuIikpKSkgJT4lCiAgZmlsdGVyKGdyZXBsKCJtb2RlIiwgcGFyYW1ldGVyKSkgJT4lCiAgc2VsZWN0KHBhcmFtZXRlciwgU1YsIHN0YXJ0c193aXRoKCJiZXRhIiksIHNpZ25pZikgJT4lCiAga25pdHI6OmthYmxlKGRpZ2l0cyA9IDMpCmBgYAoKIyBQbG90dGluZyBwcm9wZXJ0aWVzIGluIDJEIHNwYWNlcwoKYGBge3IsIGZpZy53aWR0aCA9IDYsIGZpZy5hc3AgPSAwLjZ9CmRhdGEuZnJhbWUodV9vbGQpICU+JQogIG11dGF0ZShYMSA9IFgxICogc19vbGRbMV0sCiAgICAgICAgIFgyID0gWDIgKiBzX29sZFsyXSwKICAgICAgICAgWDMgPSBYMyAqIHNfb2xkWzNdLAogICAgICAgICBYNCA9IFg0ICogc19vbGRbNF0sCiAgICAgICAgIFg1ID0gWDUgKiBzX29sZFs1XSwKICAgICAgICAgWDYgPSBYNiAqIHNfb2xkWzZdKSAlPiUKICByb3duYW1lc190b19jb2x1bW4oInByb3BlcnR5IikgJT4lCiAgYXJyYW5nZShkZXNjKGFicyhYMSkpLCBkZXNjKGFicyhYMikpLCAKICAgICAgICAgIGRlc2MoYWJzKFgzKSksIGRlc2MoYWJzKFg0KSksCiAgICAgICAgICBkZXNjKGFicyhYNSkpLCBkZXNjKGFicyhYNikpKSAlPiUKICBtdXRhdGUob3JkZXIgPSAxOm5yb3coLikpICU+JQogIGdhdGhlcihtb2RlLCB2YWx1ZSwgLXByb3BlcnR5LCAtb3JkZXIpICU+JQogIG11dGF0ZShtb2RlID0gZ3N1YigiWCIsICIiLCBtb2RlKSkgJT4lCiAgbXV0YXRlX2F0KHZhcnMocHJvcGVydHksIG1vZGUpLCBmdW5zKGFzLm51bWVyaWMpKSAlPiUKICBtdXRhdGUobW9kZSA9IGZhY3Rvcihtb2RlLCBsYWJlbHMgPSBjKCJtb2RlXzEiLCAibW9kZV8yIiwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibW9kZV8zIiwgIm1vZGVfNCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibW9kZV81IiwgIm1vZGVfNiIpKSwKICAgICAgICAgcHJvcGVydHkgPSBmYWN0b3IocHJvcGVydHksIGxhYmVscyA9IHByb3BlcnR5X25hbWVzKSkgJT4lCiAgZnVsbF9qb2luKGVmYV9mYWN0b3JzICU+JSBzZWxlY3QocHJvcGVydHksIGZhY3RvcikpICU+JQogIHNwcmVhZChtb2RlLCB2YWx1ZSkgJT4lCiAgZ2dwbG90KGFlcyh4ID0gbW9kZV8xLCB5ID0gbW9kZV8yLCBjb2xvciA9IGZhY3RvciwgCiAgICAgICAgICAgICBsYWJlbCA9IHByb3BlcnR5KSkgKwogIGdlb21fdGV4dCgpICsKICBzY2FsZV9jb2xvcl9icmV3ZXIocGFsZXR0ZSA9ICJTZXQxIikgKwogIHRoZW1lX21pbmltYWwoKSArCiAgY29vcmRfZml4ZWQoKSArCiAgc2NhbGVfeF9jb250aW51b3VzKGJyZWFrcyA9IAogICAgICAgICAgICAgICAgICAgICAgIHNlcSgtMTAsIDEwLAogICAgICAgICAgICAgICAgICAgICAgICAgICBieSA9IHJvdW5kKChzY2FsZV9saW1bMl0gLSBzY2FsZV9saW1bMV0pLzQsIDIpKSwKICAgICAgICAgICAgICAgICAgICAgZXhwYW5kID0gYygwLjI1LCAwLjI1KSkgKwogIHNjYWxlX3lfY29udGludW91cyhicmVha3MgPSAKICAgICAgICAgICAgICAgICAgICAgICBzZXEoLTEwLCAxMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgYnkgPSByb3VuZCgoc2NhbGVfbGltWzJdIC0gc2NhbGVfbGltWzFdKS80LCAyKSkpICsgIGxhYnModGl0bGUgPSAicHJvcGVydGllcyBpbiAyRCBzcGFjZTogbW9kZXMgMSAmIDIiLAogICAgICAgeCA9ICJtb2RlIDEiLCB5ID0gIm1vZGUgMiIpCgpkYXRhLmZyYW1lKHVfb2xkKSAlPiUKICBtdXRhdGUoWDEgPSBYMSAqIHNfb2xkWzFdLAogICAgICAgICBYMiA9IFgyICogc19vbGRbMl0sCiAgICAgICAgIFgzID0gWDMgKiBzX29sZFszXSwKICAgICAgICAgWDQgPSBYNCAqIHNfb2xkWzRdLAogICAgICAgICBYNSA9IFg1ICogc19vbGRbNV0sCiAgICAgICAgIFg2ID0gWDYgKiBzX29sZFs2XSkgJT4lCiAgcm93bmFtZXNfdG9fY29sdW1uKCJwcm9wZXJ0eSIpICU+JQogIGFycmFuZ2UoZGVzYyhhYnMoWDEpKSwgZGVzYyhhYnMoWDIpKSwgCiAgICAgICAgICBkZXNjKGFicyhYMykpLCBkZXNjKGFicyhYNCkpLAogICAgICAgICAgZGVzYyhhYnMoWDUpKSwgZGVzYyhhYnMoWDYpKSkgJT4lCiAgbXV0YXRlKG9yZGVyID0gMTpucm93KC4pKSAlPiUKICBnYXRoZXIobW9kZSwgdmFsdWUsIC1wcm9wZXJ0eSwgLW9yZGVyKSAlPiUKICBtdXRhdGUobW9kZSA9IGdzdWIoIlgiLCAiIiwgbW9kZSkpICU+JQogIG11dGF0ZV9hdCh2YXJzKHByb3BlcnR5LCBtb2RlKSwgZnVucyhhcy5udW1lcmljKSkgJT4lCiAgbXV0YXRlKG1vZGUgPSBmYWN0b3IobW9kZSwgbGFiZWxzID0gYygibW9kZV8xIiwgIm1vZGVfMiIsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm1vZGVfMyIsICJtb2RlXzQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm1vZGVfNSIsICJtb2RlXzYiKSksCiAgICAgICAgIHByb3BlcnR5ID0gZmFjdG9yKHByb3BlcnR5LCBsYWJlbHMgPSBwcm9wZXJ0eV9uYW1lcykpICU+JQogIGZ1bGxfam9pbihlZmFfZmFjdG9ycyAlPiUgc2VsZWN0KHByb3BlcnR5LCBmYWN0b3IpKSAlPiUKICBzcHJlYWQobW9kZSwgdmFsdWUpICU+JQogIGdncGxvdChhZXMoeCA9IG1vZGVfMSwgeSA9IG1vZGVfMywgY29sb3IgPSBmYWN0b3IsIGxhYmVsID0gcHJvcGVydHkpKSArCiAgZ2VvbV90ZXh0KCkgKwogIHNjYWxlX2NvbG9yX2JyZXdlcihwYWxldHRlID0gIlNldDEiKSArCiAgdGhlbWVfbWluaW1hbCgpICsKICBjb29yZF9maXhlZCgpICsKICBzY2FsZV94X2NvbnRpbnVvdXMoYnJlYWtzID0gCiAgICAgICAgICAgICAgICAgICAgICAgc2VxKC0xMCwgMTAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ5ID0gcm91bmQoKHNjYWxlX2xpbVsyXSAtIHNjYWxlX2xpbVsxXSkvNCwgMikpLAogICAgICAgICAgICAgICAgICAgICBleHBhbmQgPSBjKDAuMjUsIDAuMjUpKSArCiAgc2NhbGVfeV9jb250aW51b3VzKGJyZWFrcyA9IAogICAgICAgICAgICAgICAgICAgICAgIHNlcSgtMTAsIDEwLAogICAgICAgICAgICAgICAgICAgICAgICAgICBieSA9IHJvdW5kKChzY2FsZV9saW1bMl0gLSBzY2FsZV9saW1bMV0pLzQsIDIpKSkgKyAgbGFicyh0aXRsZSA9ICJwcm9wZXJ0aWVzIGluIDJEIHNwYWNlOiBtb2RlcyAxICYgMyIsCiAgICAgICB4ID0gIm1vZGUgMSIsIHkgPSAibW9kZSAzIikKCmRhdGEuZnJhbWUodV9vbGQpICU+JQogIG11dGF0ZShYMSA9IFgxICogc19vbGRbMV0sCiAgICAgICAgIFgyID0gWDIgKiBzX29sZFsyXSwKICAgICAgICAgWDMgPSBYMyAqIHNfb2xkWzNdLAogICAgICAgICBYNCA9IFg0ICogc19vbGRbNF0sCiAgICAgICAgIFg1ID0gWDUgKiBzX29sZFs1XSwKICAgICAgICAgWDYgPSBYNiAqIHNfb2xkWzZdKSAlPiUKICByb3duYW1lc190b19jb2x1bW4oInByb3BlcnR5IikgJT4lCiAgYXJyYW5nZShkZXNjKGFicyhYMSkpLCBkZXNjKGFicyhYMikpLCAKICAgICAgICAgIGRlc2MoYWJzKFgzKSksIGRlc2MoYWJzKFg0KSksCiAgICAgICAgICBkZXNjKGFicyhYNSkpLCBkZXNjKGFicyhYNikpKSAlPiUKICBtdXRhdGUob3JkZXIgPSAxOm5yb3coLikpICU+JQogIGdhdGhlcihtb2RlLCB2YWx1ZSwgLXByb3BlcnR5LCAtb3JkZXIpICU+JQogIG11dGF0ZShtb2RlID0gZ3N1YigiWCIsICIiLCBtb2RlKSkgJT4lCiAgbXV0YXRlX2F0KHZhcnMocHJvcGVydHksIG1vZGUpLCBmdW5zKGFzLm51bWVyaWMpKSAlPiUKICBtdXRhdGUobW9kZSA9IGZhY3Rvcihtb2RlLCBsYWJlbHMgPSBjKCJtb2RlXzEiLCAibW9kZV8yIiwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibW9kZV8zIiwgIm1vZGVfNCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibW9kZV81IiwgIm1vZGVfNiIpKSwKICAgICAgICAgcHJvcGVydHkgPSBmYWN0b3IocHJvcGVydHksIGxhYmVscyA9IHByb3BlcnR5X25hbWVzKSkgJT4lCiAgZnVsbF9qb2luKGVmYV9mYWN0b3JzICU+JSBzZWxlY3QocHJvcGVydHksIGZhY3RvcikpICU+JQogIHNwcmVhZChtb2RlLCB2YWx1ZSkgJT4lCiAgZ2dwbG90KGFlcyh4ID0gbW9kZV8yLCB5ID0gbW9kZV8zLCBjb2xvciA9IGZhY3RvciwgbGFiZWwgPSBwcm9wZXJ0eSkpICsKICBnZW9tX3RleHQoKSArCiAgc2NhbGVfY29sb3JfYnJld2VyKHBhbGV0dGUgPSAiU2V0MSIpICsKICB0aGVtZV9taW5pbWFsKCkgKwogIGNvb3JkX2ZpeGVkKCkgKwogIHNjYWxlX3hfY29udGludW91cyhicmVha3MgPSAKICAgICAgICAgICAgICAgICAgICAgICBzZXEoLTEwLCAxMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgYnkgPSByb3VuZCgoc2NhbGVfbGltWzJdIC0gc2NhbGVfbGltWzFdKS80LCAyKSksCiAgICAgICAgICAgICAgICAgICAgIGV4cGFuZCA9IGMoMC4yNSwgMC4yNSkpICsKICBzY2FsZV95X2NvbnRpbnVvdXMoYnJlYWtzID0gCiAgICAgICAgICAgICAgICAgICAgICAgc2VxKC0xMCwgMTAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ5ID0gcm91bmQoKHNjYWxlX2xpbVsyXSAtIHNjYWxlX2xpbVsxXSkvNCwgMikpKSArCiAgbGFicyh0aXRsZSA9ICJwcm9wZXJ0aWVzIGluIDJEIHNwYWNlOiBtb2RlcyAyICYgMyIsCiAgICAgICB4ID0gIm1vZGUgMiIsIHkgPSAibW9kZSAzIikKYGBgCgoKCiMgUGxvdHRpbmcgaXRlbXMgaW4gMkQgc3BhY2VzCgpgYGB7ciwgZmlnLndpZHRoID0gNiwgZmlnLmFzcCA9IDAuNn0KZGF0YS5mcmFtZSh2X29sZCkgJT4lCiAgbXV0YXRlKFgxID0gWDEgKiBzX29sZFsxXSwKICAgICAgICAgWDIgPSBYMiAqIHNfb2xkWzJdLAogICAgICAgICBYMyA9IFgzICogc19vbGRbM10sCiAgICAgICAgIFg0ID0gWDQgKiBzX29sZFs0XSwKICAgICAgICAgWDUgPSBYNSAqIHNfb2xkWzVdLAogICAgICAgICBYNiA9IFg2ICogc19vbGRbNl0pICU+JQogIHJvd25hbWVzX3RvX2NvbHVtbigiaXRlbSIpICU+JQogIGFycmFuZ2UoZGVzYyhhYnMoWDEpKSwgZGVzYyhhYnMoWDIpKSwgCiAgICAgICAgICBkZXNjKGFicyhYMykpLCBkZXNjKGFicyhYNCkpLAogICAgICAgICAgZGVzYyhhYnMoWDUpKSwgZGVzYyhhYnMoWDYpKSkgJT4lCiAgbXV0YXRlKG9yZGVyID0gMTpucm93KC4pKSAlPiUKICBnYXRoZXIobW9kZSwgdmFsdWUsIC1pdGVtLCAtb3JkZXIpICU+JQogIG11dGF0ZShtb2RlID0gZ3N1YigiWCIsICIiLCBtb2RlKSkgJT4lCiAgbXV0YXRlX2F0KHZhcnMoaXRlbSwgbW9kZSksIGZ1bnMoYXMubnVtZXJpYykpICU+JQogIG11dGF0ZShtb2RlID0gZmFjdG9yKG1vZGUsIGxhYmVscyA9IGMoIm1vZGVfMSIsICJtb2RlXzIiLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJtb2RlXzMiLCAibW9kZV80IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJtb2RlXzUiLCAibW9kZV82IikpLAogICAgICAgICBpdGVtID0gZmFjdG9yKGl0ZW0sIGxhYmVscyA9IGl0ZW1fbmFtZXMpKSAlPiUKICBzcHJlYWQobW9kZSwgdmFsdWUpICU+JQogIGdncGxvdChhZXMoeCA9IG1vZGVfMSwgeSA9IG1vZGVfMiwgbGFiZWwgPSBpdGVtKSkgKwogIGdlb21fdGV4dCgpICsKICB0aGVtZV9taW5pbWFsKCkgKwogIGNvb3JkX2ZpeGVkKCkgKwogIHNjYWxlX3hfY29udGludW91cyhicmVha3MgPSAKICAgICAgICAgICAgICAgICAgICAgICBzZXEoLTEwLCAxMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgYnkgPSByb3VuZCgoc2NhbGVfbGltWzJdIC0gc2NhbGVfbGltWzFdKS80LCAyKSksCiAgICAgICAgICAgICAgICAgICAgIGV4cGFuZCA9IGMoMC4yNSwgMC4yNSkpICsKICBzY2FsZV95X2NvbnRpbnVvdXMoYnJlYWtzID0gCiAgICAgICAgICAgICAgICAgICAgICAgc2VxKC0xMCwgMTAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ5ID0gcm91bmQoKHNjYWxlX2xpbVsyXSAtIHNjYWxlX2xpbVsxXSkvNCwgMikpKSArICBsYWJzKHRpdGxlID0gIml0ZW1zIGluIDJEIHNwYWNlOiBtb2RlcyAxICYgMiIsCiAgICAgICB4ID0gIm1vZGUgMSIsIHkgPSAibW9kZSAyIikKCmRhdGEuZnJhbWUodl9vbGQpICU+JQogIG11dGF0ZShYMSA9IFgxICogc19vbGRbMV0sCiAgICAgICAgIFgyID0gWDIgKiBzX29sZFsyXSwKICAgICAgICAgWDMgPSBYMyAqIHNfb2xkWzNdLAogICAgICAgICBYNCA9IFg0ICogc19vbGRbNF0sCiAgICAgICAgIFg1ID0gWDUgKiBzX29sZFs1XSwKICAgICAgICAgWDYgPSBYNiAqIHNfb2xkWzZdKSAlPiUKICByb3duYW1lc190b19jb2x1bW4oIml0ZW0iKSAlPiUKICBhcnJhbmdlKGRlc2MoYWJzKFgxKSksIGRlc2MoYWJzKFgyKSksIAogICAgICAgICAgZGVzYyhhYnMoWDMpKSwgZGVzYyhhYnMoWDQpKSwKICAgICAgICAgIGRlc2MoYWJzKFg1KSksIGRlc2MoYWJzKFg2KSkpICU+JQogIG11dGF0ZShvcmRlciA9IDE6bnJvdyguKSkgJT4lCiAgZ2F0aGVyKG1vZGUsIHZhbHVlLCAtaXRlbSwgLW9yZGVyKSAlPiUKICBtdXRhdGUobW9kZSA9IGdzdWIoIlgiLCAiIiwgbW9kZSkpICU+JQogIG11dGF0ZV9hdCh2YXJzKGl0ZW0sIG1vZGUpLCBmdW5zKGFzLm51bWVyaWMpKSAlPiUKICBtdXRhdGUobW9kZSA9IGZhY3Rvcihtb2RlLCBsYWJlbHMgPSBjKCJtb2RlXzEiLCAibW9kZV8yIiwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibW9kZV8zIiwgIm1vZGVfNCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibW9kZV81IiwgIm1vZGVfNiIpKSwKICAgICAgICAgaXRlbSA9IGZhY3RvcihpdGVtLCBsYWJlbHMgPSBpdGVtX25hbWVzKSkgJT4lCiAgc3ByZWFkKG1vZGUsIHZhbHVlKSAlPiUKICBnZ3Bsb3QoYWVzKHggPSBtb2RlXzEsIHkgPSBtb2RlXzMsIGxhYmVsID0gaXRlbSkpICsKICBnZW9tX3RleHQoKSArCiAgdGhlbWVfbWluaW1hbCgpICsKICBjb29yZF9maXhlZCgpICsKICBzY2FsZV94X2NvbnRpbnVvdXMoYnJlYWtzID0gCiAgICAgICAgICAgICAgICAgICAgICAgc2VxKC0xMCwgMTAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ5ID0gcm91bmQoKHNjYWxlX2xpbVsyXSAtIHNjYWxlX2xpbVsxXSkvNCwgMikpLAogICAgICAgICAgICAgICAgICAgICBleHBhbmQgPSBjKDAuMjUsIDAuMjUpKSArCiAgc2NhbGVfeV9jb250aW51b3VzKGJyZWFrcyA9IAogICAgICAgICAgICAgICAgICAgICAgIHNlcSgtMTAsIDEwLAogICAgICAgICAgICAgICAgICAgICAgICAgICBieSA9IHJvdW5kKChzY2FsZV9saW1bMl0gLSBzY2FsZV9saW1bMV0pLzQsIDIpKSkgKyAgbGFicyh0aXRsZSA9ICJpdGVtcyBpbiAyRCBzcGFjZTogbW9kZXMgMSAmIDMiLAogICAgICAgeCA9ICJtb2RlIDEiLCB5ID0gIm1vZGUgMyIpCgpkYXRhLmZyYW1lKHZfb2xkKSAlPiUKICBtdXRhdGUoWDEgPSBYMSAqIHNfb2xkWzFdLAogICAgICAgICBYMiA9IFgyICogc19vbGRbMl0sCiAgICAgICAgIFgzID0gWDMgKiBzX29sZFszXSwKICAgICAgICAgWDQgPSBYNCAqIHNfb2xkWzRdLAogICAgICAgICBYNSA9IFg1ICogc19vbGRbNV0sCiAgICAgICAgIFg2ID0gWDYgKiBzX29sZFs2XSkgJT4lCiAgcm93bmFtZXNfdG9fY29sdW1uKCJpdGVtIikgJT4lCiAgYXJyYW5nZShkZXNjKGFicyhYMSkpLCBkZXNjKGFicyhYMikpLCAKICAgICAgICAgIGRlc2MoYWJzKFgzKSksIGRlc2MoYWJzKFg0KSksCiAgICAgICAgICBkZXNjKGFicyhYNSkpLCBkZXNjKGFicyhYNikpKSAlPiUKICBtdXRhdGUob3JkZXIgPSAxOm5yb3coLikpICU+JQogIGdhdGhlcihtb2RlLCB2YWx1ZSwgLWl0ZW0sIC1vcmRlcikgJT4lCiAgbXV0YXRlKG1vZGUgPSBnc3ViKCJYIiwgIiIsIG1vZGUpKSAlPiUKICBtdXRhdGVfYXQodmFycyhpdGVtLCBtb2RlKSwgZnVucyhhcy5udW1lcmljKSkgJT4lCiAgbXV0YXRlKG1vZGUgPSBmYWN0b3IobW9kZSwgbGFiZWxzID0gYygibW9kZV8xIiwgIm1vZGVfMiIsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm1vZGVfMyIsICJtb2RlXzQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm1vZGVfNSIsICJtb2RlXzYiKSksCiAgICAgICAgIGl0ZW0gPSBmYWN0b3IoaXRlbSwgbGFiZWxzID0gaXRlbV9uYW1lcykpICU+JQogIHNwcmVhZChtb2RlLCB2YWx1ZSkgJT4lCiAgZ2dwbG90KGFlcyh4ID0gbW9kZV8yLCB5ID0gbW9kZV8zLCBsYWJlbCA9IGl0ZW0pKSArCiAgZ2VvbV90ZXh0KCkgKwogIHRoZW1lX21pbmltYWwoKSArCiAgY29vcmRfZml4ZWQoKSArCiAgc2NhbGVfeF9jb250aW51b3VzKGJyZWFrcyA9IAogICAgICAgICAgICAgICAgICAgICAgIHNlcSgtMTAsIDEwLAogICAgICAgICAgICAgICAgICAgICAgICAgICBieSA9IHJvdW5kKChzY2FsZV9saW1bMl0gLSBzY2FsZV9saW1bMV0pLzQsIDIpKSwKICAgICAgICAgICAgICAgICAgICAgZXhwYW5kID0gYygwLjI1LCAwLjI1KSkgKwogIHNjYWxlX3lfY29udGludW91cyhicmVha3MgPSAKICAgICAgICAgICAgICAgICAgICAgICBzZXEoLTEwLCAxMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgYnkgPSByb3VuZCgoc2NhbGVfbGltWzJdIC0gc2NhbGVfbGltWzFdKS80LCAyKSkpICsKICBsYWJzKHRpdGxlID0gIml0ZW1zIGluIDJEIHNwYWNlOiBtb2RlcyAyICYgMyIsCiAgICAgICB4ID0gIm1vZGUgMiIsIHkgPSAibW9kZSAzIikKYGBgCgo=